#include<bits/stdc++.h>
using namespace std;

int n;
int arr[15][15];
vector<int> vec;
int sum=0;

void dfs(int r,int c){
	if(arr[r][c]<0){
		return;
	}
	if(r==n){
		sum++;
		if(sum<=3){
			for(int i=1;i<n;i++){
				for(int j=1;j<=n;j++){
					if(arr[i][j]>=0) printf("%d ",j);
				}
			}
			printf("%d\n",c);
		}
		return;
	}
	//
	for(int i=1;i<=n;i++){
		if(i==c) continue;
		arr[r][i]--;
	}
	for(int i=r+1;i<=n;i++){
		arr[i][c]--;
	}
	for(int i=r+1,j=c+1;i<=n&&j<=n;i++,j++){
		arr[i][j]--;
	}
	for(int i=r+1,j=c-1;i<=n&&j>0;i++,j--){
		arr[i][j]--;
	}
	for(int i=1;i<=n;i++){
		dfs(r+1,i);
	}
	//
	for(int i=1;i<=n;i++){
		if(i==c) continue;
		arr[r][i]++;
	}
	for(int i=r+1;i<=n;i++){
		arr[i][c]++;
	}
	for(int i=r+1,j=c+1;i<=n&&j<=n;i++,j++){
		arr[i][j]++;
	}
	for(int i=r+1,j=c-1;i<=n&&j>0;i++,j--){
		arr[i][j]++;
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		memset(arr,0,sizeof(arr));
		dfs(1,i);
	}
	printf("%d",sum);
	return 0;	
}
